Software companies invariably strive to improve products sold to their customers. Often software requires maintenance in the form of patches that are distributed to the customer for installation on their machines to address any bugs in or to provide improvements to the installed software. From a customer's perspective, patching is a complicated, time-consuming and risky task. A system administrator needs to know which patches are available, which are applicable, and in which order they should be applied. This can be achieved manually or automatically by monitoring a software vendor's web-site from time to time and reviewing any available patches pertaining to installed software; reviewing their applicability in light of an inventory of installed applications and any associated installed patches, then selecting, downloading and installing any appropriate patches.
From a software vendor's perspective, a significant proportion of the need for maintenance or support arises as a consequence of improperly patched environments. Addressing these issues increases the software vendor's costs in terms of deploying, or at least utilising, support and maintenance staff to fix the problematical environments. Furthermore, the customer's confidence in the software might be undermined through no fault of the vendor. Still further, once a patch has been improperly installed, backing out, that is, uninstalling the patch, is a far from trivial issue. The patch domain is inherently complex and dynamic. Patches are not isolated items but are interrelated to each other. A given capability in a patch may depend on capabilities provided by other patches. Therefore, a patch may require another patch to be installed to function correctly. Also, a patch may supersede one or more other patches. For example, this happens when a new patch includes bug fixes and new features that exist in other patches thereby making them obsolete. Finally, a patch may be incompatible with another patch or specific configurations.
Currently patch analysis comprises producing a list of all unsuperseded installed patches relating to a customer's products, platforms and versions and making recommendations relating to those patches that have not been installed and relating to those patches that have been superseded.